package com.gupaoedu;

import java.util.concurrent.*;

/**
 * 使用异步线程Demo
 */
public class CallableDemo2 implements Callable<String> {

    public static void main(String[] args) throws ExecutionException, InterruptedException {
        // 创建线程池,执行实现了Callable , Runnable 接口的 类中的call()或者run方法
        ExecutorService executorService = Executors.newCachedThreadPool();
        // 异步执行call()
        Future<String> future = executorService.submit(new CallableDemo2());
        // 如果调用future.get()方法，那么会导致call()方法执行完毕，main方法才能继续往下执行
        String str= future.get();
        System.out.println(str);
        // 注意一定要关闭线程池，否则程序会一直运行
        executorService.shutdown();
    }

    @Override
    public String call() throws Exception {
        return "异步返回123";
    }
}
